#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>

int main(void)
{
    // 创建并打开两个文件temp和temp1，fd和fd2分别是这两个文件的文件描述符。
    int fd = open("temp", O_RDWR| O_CREAT, 0664);
    int fd2 = open("temp1", O_RDWR| O_CREAT| O_APPEND, 0664);
    
    // 调用dup2函数，让fd2和fd一样成为temp文件的文件描述符。
    dup2(fd, fd2);

    // 通过fd2向temp写入一段话"change the world by programing"
    char *p = "change the world by programming,,,";
    write(fd2, p, strlen(p));
    close(fd2);
    // 关闭fd2，通过fd读取temp内容并打印
    char buf[1024];
    lseek(fd, 0, SEEK_SET);
    read(fd, buf, sizeof(buf));
    printf("buf = %s\n", buf);
    close(fd);
    return 0;
}
